來介紹一下 Shell吧!
在操作 Linux 的時候,使用終端機指令操作以外,加上使用一些簡單的 Sell 程式,可以簡化許多繁複的工作。但在現行 Linux 發行版本中,大多都使用 Bash 為預設 Shell,活用 Shell 可以有效降低操作的複雜度。
更簡單來說,以「核心」及「硬體」來做區分,而「shell」就是提供空具命令「核心」去跟「硬體」說該動以來工作囉!
如果以上太複雜....難懂,只要懂 shell 是一個「文字模式介面」就好
sh 的全名是 Bourne shell,由 AT&T 公司的 Steve Bourne開發,為了紀念他,就用他的名字命名。
sh 是 UNIX 上的標準 shell,很多 UNIX 版本都配有 sh。sh 是第一個流行的 Shell。
bash 是 Linux 目前預設的 shell,bash 由 GNU 組織開發,保持了對 sh 的兼容性,是各 Linux 發行版預設的 shell,bash 是完全免費的,屬於開源軟體(Open Source)。
Linux 作為預設的 Shell 是因為它具有以下特色:
csh 是由柏克萊大學的 Bill Joy 設計的,這個 shell 的語法有點類似C語言,所以才得名為 C shell ,簡稱為 csh,共有52個內部命令。該 shell 其實是指向/bin/tcsh這樣的一個 shell,也就是說,csh 其實就是 tcsh。
Bill Joy 是一個風雲人物,他創立了 BSD 作業系統,開發了 vi 編輯器,還是 Sun 公司的創始人之一。
BSD 是 UNIX 的一個重要分支,後人在此基礎上發展出了很多現代的作業系統,最著名的有 FreeBSD、OpenBSD 和 NetBSD,就連 Mac OS X 在很大程度上也基於BSD。
zsh 是基於 Sh 之上,由Paul Falstad完成,共有 84 個內部命令,做出了大量的改進,並且同時加入了Bash、ksh 及 tcsh的某些功能。
zsh具有如下特性:
shell 是一個程序,為什麼說是程序,可以直接在終端機輸入 ps
會看到 bash
或是其他的 shell,shell 一般都是放在 /bin
或者 /usr/bin
目錄下,Linux 系統可用的 Shell 都會記錄在 /etc/shells
文件。
chsh 指令主要用來更換預設的 shell。
[root@localhost etc]# chsh [選項] [目標]
-s
<shell 名稱> --shell
<shell 名稱>:更改系統預設的shell環境。-l
--list-shells
列出目前系統可用的shell清單。-u
--help
線上幫助。-v
--version
顯示版本資訊。cat
指令,檢視當前系統可用 shell 有哪些[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
// 或
[root@localhost etc]# chsh -l
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
在 Linux 系統上,sh 大部分已經被 bash
這個 shell 代替, /bin/sh
通常會指向 /bin/bash
的符號連結。
[root@localhost ~]# echo $SHELL
/bin/bash
// 或
[root@localhost etc]# echo $0
/bin/bash
※ echo
是一個 shell 印出變數的指令,其實跟 PHP 的 echo
很像。
若要變更使用者預設的 shell,使用 chsh
指令。
[root@localhost etc]# chsh -s /bin/bash
變更 root 的 shell。
chsh: Shell not changed.
※ 更改完,記得重新登入,就可使用。